package com.bzkj.document.service.purchase;

import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.domain.model.LoginUser;
import com.bzkj.common.core.page.TableDataInfo;
import com.bzkj.common.domain.NccRequestDTO;

import java.util.HashMap;
import java.util.Map;

/**
 * @projectName: bzkj-wms
 * @package: com.bzkj.document.service.purchase
 * @className: PurchaseService
 * @description: 采购订单服务接口
 * @author: C1309
 * @createDate: 2024年11月18日
 * @version: v1.0
 */
public interface PurchaseService {

    /**
     * 查询NCC采购订单
     *
     * @param nccRequestDTO 查询条件
     * @return 查询结果
     */
    TableDataInfo selectPurchaseOrder(NccRequestDTO nccRequestDTO);

    /**
     * 将NCC创建的采购入库单插入WMS采购入库单表
     *
     * @param purchaseInboundOrder 采购入库单数据
     * @param loginUser            当前登录用户
     * @return 操作结果
     */
    AjaxResult insertPurchase(Map<String, Object> purchaseInboundOrder, LoginUser loginUser);

    /**
     * 修改NCC采购入库单信息
     *
     * @param responseBody 需要修改的采购入库单数据
     * @param loginUser    当前登录用户
     * @param isSign       是否是签字操作
     * @return 修改结果
     */
    AjaxResult updatePurchase(Map<String, Object> responseBody, LoginUser loginUser, boolean isSign);

    /**
     * 采购入库单撤回
     *
     * @param headerId 采购入库单表头主键
     * @param loginUser 登录用户
     * @return 撤回结果
     */
    AjaxResult orderBack(String headerId, LoginUser loginUser);

    /**
     * 更新库存
     * @param headerId 采购入库单表头主键
     * @param loginUser 操作用户
     * @return 更新结果
     */
    AjaxResult updateInventory(String headerId, LoginUser loginUser);
}
